var idDao = require('../daos/idDao');

/*
Obtengo el Id correspondiente al model pasado como parámetro e incremento
*/
module.exports.getId = function (modelStr, callback) {
	idDao.findOne({key:modelStr}, function(err, id) {
		if (err) {
			callback(err);
			return;
		}
		if(id) {
			callback(false, id.nextId);
			idDao.upsert(modelStr, {$inc: {nextId : 1}}, function(err) {
				if (err)
					console.log("Fallo al incrementar índice de " + modelStr);	
				else
					console.log("Indice de " + modelStr + " incrementado.");
			});
		} else {
			console.log('ERROR: idService getId No se recupero Id (sin error)' + modelStr);
	  	  	callback('Get id error');
		}
	});
}

/*
Inicializo los Id en 1 para el model pasado como parámtro, siempre y cuando no exista previamente
*/
module.exports.initializeModelId = function (modelStr, callback) {
	idDao.findOne({key:modelStr}, function(err, id) {
		if (err || !id)  {
			idDao.set({key: modelStr, nextId: 1}, function(e) {
				if (e)
					callback(err);
				else
					callback();
			});
		} else {
			callback();
		}
	});
}

module.exports.upsert = function (key, data, callback) {
	idDao.upsert(key, data, callback);
}

module.exports.remove = function (key, callback) {
	idDao.remove(key, callback);
}